iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
永豐金融APIs

試著讀懂與串接永豐金融APIs系列 第 19

Day 0x13 - 訂單查詢 (Part1 : Controller & Route)

  • 分享至 

  • xImage
  •  

0x1 前言

弄了這麼久的建立訂單、訊息通知,終於要來處理第三個 API 訂單查詢

0x2 訂單查詢 (OrderQuery) API

(文件寫的照貼)

  • Keyword OrderQuery
  • 使用時機
    • 收款紀錄都可透過此 API 查詢,若有交易遲未收到豐收款的主動通知,可透過本 API 介面,利用條件篩選,主動發起查詢,減少掉單問題。
  • 注意事項
    1. 訂單查詢時至少要選擇其一條件 (1)訂單編號 (2)收款方式 (3)交易起迄 (4)付款狀態。
    2. 每次查詢筆數上限為 300 筆,建議條件範圍不要設定過大。
  • 傳遞參數
    https://ithelp.ithome.com.tw/upload/images/20210927/20141805J9gt4zqWEe.png

另外要注意的是時間的要求是不帶符號,用 date('YmdHis')大致上就可以了 (應該吧)
OK,決定一下今日目標,這裡單純追蹤單筆訂單狀態,
但不免俗的還是用 Postman 測一下,看回傳的結果是否要解密,基礎只有一個必填 ShopNo 與需要查詢的訂單編號 OrderNo

{
    "ShopNo": "ShopNo",
    "OrderNo": "20210927072942"
}

https://ithelp.ithome.com.tw/upload/images/20210927/20141805tv5Pd9021K.png
喔對是 Order 的網址,要包 sign 等等的東西,所以解密也要處理,天啊我真的是金魚腦 T_T,寫完就忘了。
那就先寫 Controller 的函數吧

// app/Http/Controllers/Controller.php
public function track_order()
{
    $sinopac = $this->initSinopac();
    $data = $sinopac->requestDataset('OrderQuery', [
        'ShopNo'    => 'NA0249_001',
        'OrderNo'   => '20210927072942'
    ]);
    $message = $sinopac->callApi('https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order', $data);

    $decrypt_message = $this->reply_message_decrypt($sinopac, $message);
    dd($decrypt_message);
    return $decrypt_message;
}

建立 api Route

// routes/api.php
Route::post('/track_order', [\App\Http\Controllers\Controller::class, 'track_order']);

serve 起來後,用 Postmen 看一下結果
https://ithelp.ithome.com.tw/upload/images/20210927/201418057zfPUn0jsN.png

這裡要注意一下的就是 OrderList 為陣列
而每一筆訂單的 PayType 會影響內容

[
    'A' => 'ATMParam', // ATM
    'C' => 'CardParam', // 信用卡
]

0x3 今日結語

今天就先這樣,明天來建立訂單查詢的 view,針對回覆內容來微調今天建立的 track_order
明天見


上一篇
Day 0x12 - 建立 Return URL 的畫面
下一篇
Day 0x14 - 訂單查詢 (Part2 : View)
系列文
試著讀懂與串接永豐金融APIs30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言